/**
 * 封装全局复用工具函数
 * 1. 工具函数封装多少？多个
 * 2. 封装完之后怎么方便使用？
 *    1. 导出方法 =》页面导入使用
 *    2. 追加到小程序全局对象wx上=》页面通过wx.方法名访问使用封装方法
 */
import dayjs from 'dayjs'

const utils = {
  /**
   * toast 参数传什么？
   * 1. title 提示内容
   * 2. icon 显示的图标
   */
  toast(title = '没有传就提示我', icon = "success") {
    wx.showToast({
      title, // 提示内容
      icon, // 显示的图标
      duration: 2000, // 几秒后自动关闭
      mask: true, // 是否显示遮罩
    });
  },
  /**
   * 
   * @param {*} date 格式化的时间
   * @param {*} type 格式化时间格式
   */
  formatTime(date, type = 'YYYY-MM-DD') {
    // 返回格式化的结果
    return dayjs(date).format(type)
  },
  convertToQueryParams(obj) {
    const query = Object.keys(obj).map(function (key) {
      return key + '=' + obj[key]
    }).join('&')
    return query ? `?${query}` : ''
  },
  /**
   * 
   * @param {*} filePath 上传 file 对象
   * @param {*} formData 额外传递的参数
   */
  upload(filePath, formData) {
    return new Promise((resolve, reject) => {
      wx.uploadFile({
        url: `${wx.baseURL}/upload`,
        filePath, // 上传文件对象
        name: 'file', // 后台上传图片的属性名
        // 后台需要的其它参数放到这里
        formData,
        header: {
          Authorization: getApp().token
        },
        success: (result) => {
          const data = JSON.parse(result.data)
          console.log('上传结果：', data)
          setTimeout(() => {
            wx.utils.toast(data.message, 'none')
          }, 1000)
          if (data.code === 1e4) {
            resolve(data)
          } else {
            if (data.code === 401) {
              // 读取当前历史栈
              const pageStack = getCurrentPages()
              // 取出当前页面路径，登录成功能跳转到该页面
              const currentPage = pageStack[pageStack.length - 1]
              wx.redirectTo({
                url: `/pages/login/index?redirectUrl=/${encodeURIComponent(currentPage.route)}`
              });
            }
            reject(data)
          }
        }
      });
    })

  }
}

// 往wx全局对象上追加（挂载）utils
// 去哪里执行utils,所有页面就可以通过wx.utils访问？=》去小程序入口app.js
wx.utils = utils

export default utils